<html>
<body>

<p>
    <em>nookNotes</em> is a simple note-taking application.  As such it manages an arbitrary number
    of notes (displayed in a list), each of which can in turn hold an arbitrary number of items
    (again displayed in a list).  Items can be made checkable, allowing for notes to be used as
    check lists.
</p>

<p>
    <em>nookNotes</em> is made up of a number of activities, the main one (and entry point) of
    which is {@link com.nookdevs.notes.NookNotes}.  Sub-activities are called internally but are
    also accessible externally &mdash; see the associations in the manifest.  In particular, all
    of the activities operate on URIs of the included content provider for notes.
</p>

<p>
    <em>nookNotes'</em> content provider, implemented in class {@link
    com.nookdevs.notes.provider.NotesSQLite}, operates on URIs handling which programmatically is
    facilitated by utility class {@link com.nookdevs.notes.provider.NotesUris}.  The URI patterns
    and their handling by the content provider are as follows:
</p>

<ul>
    <li>
        <code>content://com.nookdevs.provider.notes/notes</code><br/>
        This URI denotes the overall list of notes.<br/>
        Use this with <code>query()</code> to retrieve notes, or with <code>insert()</code> to
        add notes.  Internally, a notes table is accessed which is made up of fields
        represented by the {@link com.nookdevs.notes.provider.Notes}.<code>KEY_NOTE_*</code>
        column name constants. <code>insert()</code> will yield the URI of the note added, if
        successful.
    </li>
    <li>
        <code>content://com.nookdevs.provider.notes/notes/#</code><br/>
        This URI denotes a single note, identified by its ID.<br/>
        Use with <code>query()</code> to retrieve an individual note, with
        <code>update()</code> to update a note's data, or with <code>delete</code> to delete
        a note.
    </li>
    <li>
        <code>content://com.nookdevs.provider.notes/notes/#/view</code><br/>
        This URI represents a single note for viewing purposing, resulting in a change of
        the notes' order by when they were last viewed.<br/>
        Use with <code>query()</code> to retrieve an individual note and have its
        {@link com.nookdevs.notes.provider.Notes#KEY_NOTE_ORDER_VIEWED} attribute updated.
    </li>
    <li>
        <code>content://com.nookdevs.provider.notes/notes/#/items</code><br/>
        This URI denotes a single note's items.<br/>
        Use with <code>query()</code> to retrieve a note's items, or with <code>insert()</code>
        to add items.
    </li>
    <li>
        <code>content://com.nookdevs.provider.notes/notes/#/items/sort_alpha</code><br/>
        <code>content://com.nookdevs.provider.notes/notes/#/items/sort_checked</code><br/>
        <code>content://com.nookdevs.provider.notes/notes/#/items/sort_reverse</code><br/>
        <code>content://com.nookdevs.provider.notes/notes/#/items/sort_clear</code><br/>
        URIs for transforming a note's list of items: sort it alphabetically, by checkable
        states (unchecked &rarr; checked &rarr; not checkable); reverse it, clear it.<br/>
        Use with <code>update()</code> to have the respective transformation applied.
    </li>
    <li>
        <code>content://com.nookdevs.provider.notes/notes/#/items/#</code><br/>
        This URI denotes a single item of a note (the first placeholder being the note's ID,
        the second the item's 0-based index in its list of items).<br/>
        Use with <code>query()</code> to retrieve an item, with <code>update()</code> to
        update an item, with <code>insert()</code> to insert an item at a specific index, or with
        <code>delete()</code> to delete an item. Internally, an items table is accessed which is
        made up of fields represented by the
        {@link com.nookdevs.notes.provider.Notes}.<code>KEY_ITEM_*</code> column name constants.
        <code>insert()</code> will yield the URI of the item added, if successful.
    </li>
    <li>
        <code>content://com.nookdevs.provider.notes/notes/#/items/#/move/#</code><br/>
        URI for changing the index of an item of a note (the first placeholder being the note's
        ID, the second the item's 0-based index in its list of items, the third its new
        index).<br/>
        Use with <code>update()</code>.
    </li>
    <li>
        <code>content://com.nookdevs.provider.notes/notes/#/items/#/height</code><br/>
        URI for updating the cached display height of an item of a note (the first placeholder
        being the note's ID, the second the item's 0-based index in its list of items).  Updating
        the height this way will neither update the note's
        {@link com.nookdevs.notes.provider.Notes.KEY_NOTE_ORDER_EDITED} field nor notify
        observers; conversely, the attribute is reset to <code>NULL</code> whenever the item is
        touched.<br/>
        Use with <code>update()</code>.
    </li>
</ul>

</body>
</html>
